package com.prd.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.prd.dto.CustomerGuestDTO;
import com.prd.model.CustomerGuestDO;
import com.prd.util.JsonData;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 客户-客人总表 服务类
 * </p>
 *
 * @author o1
 * @since 2023-11-27
 */
public interface CustomerGuestService extends IService<CustomerGuestDO> {

    CustomerGuestDO getOne(String keyWord);

    void removeOneByCustomerNo(String customerNo);

    void removeOneByGuestNo(String guestNo);

    CustomerGuestDTO getOneByGuestNo(String guestNo);

    /**
     * 客人-简易报备
     * @param guestDTO
     * @return
     */
    JsonData uAddSimple(CustomerGuestDTO guestDTO);

    JsonData addSimple(CustomerGuestDO guestDO);

    /**
     * 客人-详细报备
     * @param guestDTO
     * @return
     */
    JsonData uAddDetail(CustomerGuestDTO guestDTO);

    /**
     * 客人-更新/新增
     * @param guestDTO
     * @return
     */
    JsonData uUpdateAndAdd(CustomerGuestDTO guestDTO);

    /**
     *
     * @param guestDO
     * @return
     */
    JsonData update(CustomerGuestDO guestDO);


    /**
     * 客人-合并
     * @param guestDTO
     * @return
     */
    JsonData uMerge(CustomerGuestDTO guestDTO);


    /**
     *
     * @param customerNo
     * @return
     */
    List<CustomerGuestDTO> searchForList(String customerNo);

    /**
     *
     * @param page
     * @param size
     * @param keyWord
     * @param customerType
     * @param customerStatus
     * @param softOf
     * @param orderBy
     * @param address
     * @param customerLevel
     * @param businessStatus
     * @param lastBusinessDay
     * @return
     */
    Map<String, Object> uQueryGuest(int page, int size, String keyWord, int customerType, int customerStatus, int softOf, int orderBy, String address, int customerLevel, int businessStatus, int lastBusinessDay);

    List<CustomerGuestDTO> uQueryGuest2(String keyWord, int customerType, int customerStatus, int softOf, int orderBy, String address, int customerLevel, int businessStatus, int lastBusinessDay);


    /**
     * uni报备详情
     * @param guestNo
     * @return
     */
    JsonData uInfo(String guestNo);

    /**
     * uni移除客户"
     * @param customerNo
     * @param guestNo
     * @return
     */
    JsonData uRemoveCustomer(String customerNo, String guestNo);

    /**
     * 编辑详细信息
     * @return
     */
    JsonData uAddAndUpdateDetail(CustomerGuestDTO guestDTO);

    /**
     * 客户模块-UNI-获得详细信息
     * @param guestNo
     * @return
     */
    JsonData uGetDetailInfo(String guestNo);

    /**
     * 列表详情
     * @param guestNo
     * @return
     */
    JsonData uInfo2(String guestNo);
}
